package com.precojusto;

import java.io.IOException;
import java.util.List;

import javax.servlet.ServletException;
import javax.servlet.http.*;



import com.google.gson.Gson;

@SuppressWarnings("serial")
public class UsuarioServlet extends HttpServlet {
	public void doPut(HttpServletRequest req, HttpServletResponse resp)
			throws IOException {

		Gson g = new Gson();
		JDOUtils j = new JDOUtils();
		
		String data = req.getParameter("data");
		Usuario u = g.fromJson(data, Usuario.class);
		
		resp.setContentType("text/plain");
		if( u.getId() == null ){			
			j.save(u);			
			resp.getWriter().println(g.toJson(u));
		}
		else{
			resp.getWriter().println("{'erro':'usuario ja cadastrado'}");
		}	
	}
	
	public void doGet(HttpServletRequest req, HttpServletResponse resp)
			throws IOException {
		
		Gson g = new Gson();
		JDOUtils j = new JDOUtils();
		
		String data = req.getParameter("data");
		Usuario u = g.fromJson(data, Usuario.class);
		
		List <Usuario> usuarios = j.findByAttribute(Usuario.class, "email", u.getEmail());
		
		resp.setContentType("text/plain");
		if(usuarios != null){		
			resp.getWriter().println(g.toJson(usuarios.get(0)));
		}
		else {
			resp.getWriter().println("{'erro': 'usuario nao encontrado'}");
		}
	}
	
	@Override
	protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		JDOUtils jdo = new JDOUtils();
		String data = req.getParameter("data");
		Gson g = new Gson();
		Usuario u = g.fromJson(data, Usuario.class);
		resp.setContentType("text/plain");
		
		if (u != null && u.getId() != null) {
			List<Usuario> usuarios = jdo.findByAttribute(Usuario.class, "id", u.getId());
			if (usuarios != null && usuarios.size() > 0) {
				Usuario pOri = usuarios.get(0);
				pOri.setEmail(u.getEmail());
				pOri.setSenha(u.getSenha());
				pOri.setNome(u.getNome());
				jdo.save(pOri);
				resp.getWriter().println(g.toJson(pOri));
			}
			else {
				resp.getWriter().println("{'erro': 'usuario nao encontrado'}");
			}
		}
		else {
			resp.getWriter().println("{'error': 'usuario nao pode ser procurado'}");
		}
	}
}
	
	
